package seg2500.messagerie;

import java.security.*;
import com.lloseng.ocsf.client.ObservableClient;

/**
 * La classe <code> Session </code> est un Singleton
 * contenant les parametres essentiels du cote
 * client de la messagerie. Cette classe est
 * un <code> ObservableClient </code> auquel
 * s'ajoute un attribut contenant l'utilisateur.
 *
 * @author Dr Robert Lagani&egrave;re
 */
public class Session extends ObservableClient {

  private static Session session = null;
  private static String host = "localhost";
  private static int port = 5555;

  private Principal utilisateur = null; 

  /**
   * Fixe les parametres du serveur.
   * Les valeurs par defaut sont
   * localhost et 5555.
   *
   * @param h nom de l'hote.
   * @param p numero du port de l'hote.
   */
  public static void connexion(String h, int p) {

    host= h;
    port= p;
  }

  /**
   * Retourne une instance de la session courante.
   * La session est creee si elle n'existe pas.
   *
   * @return l'identite de l'utilisateur.
   */
  public static Session instance() {

    if (session == null) {
      session= new Session(host, port);
    }

    return session;
  }

  private Session(String host, int port) {

    super(host, port);
  }

  /**
   * Associe un utilisateur a la session courante.
   *
   * @param id l'utilisateur.
   */
  public void utilisateur(Principal id) {

    utilisateur= id;
  }

  /**
   * Retourne une description de l'utilisateur de
   * la messagerie.
   *
   * @return l'identite de l'utilisateur.
   */
  public Principal getUtilisateur() {

    return utilisateur;
  }
}